package com.shenfa.dao;

import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;

import com.ibatis.sqlmap.client.SqlMapClient;
import com.shenfa.bean.PaperCityCrd;
import com.shenfa.bean.ProductInfType;
import com.shenfa.bean.TreeNode;

public class ProductDao {

	@Autowired
	private SqlMapClient sqlMapClient;
	
	private int flag=0;

	/**
	 * 新增卡产品信息
	 * 
	 * @param 龙辰三
	 * @date 2011-8-20
	 * 
	 * @param product
	 * 
	 * @return boolean
	 */
	public boolean addProdInfo(ProductInfType product) {
		try {
			sqlMapClient.insert("product_manager.add_prodInfo", product);
		} catch (SQLException e) {
			e.printStackTrace();
			return false;
		}
		return true;
	}
	
	/**
	 * 修改产品信息数据
	 * 
	 * @param 龙辰三
	 * @date 2011-8-20
	 * 
	 * @param product
	 * 
	 * @return boolean
	 */
	public boolean editProdInfo(ProductInfType product) {
		try {
			sqlMapClient.update("product_manager.update_prodinfo", product);
		} catch (SQLException e) {
			e.printStackTrace();
			return false;
		}
		return true;
	}

	/**
	 * 查询产品类型表,用于构造根节点,下拉选项
	 * 
	 * @param 龙辰三
	 * @date 2011-8-20
	 * @param prodId
	 * 
	 * @return List<ProductInfType>
	 */
	@SuppressWarnings("unchecked")
	public List<TreeNode> queryTreeRoot(ProductInfType prodinfo) {
		List<TreeNode> list=new ArrayList<TreeNode>();
		try {
			list= sqlMapClient.queryForList("product_manager.query_treeroot",	prodinfo);
		} catch (SQLException e) {
			e.printStackTrace();
			return list;
		}
		return list;
	}
	
	/**
	 * 查询产品类型表gridpanel显示列
	 * 
	 * @param 龙辰三
	 * @date 2011-8-20
	 * @param prodId
	 * 
	 * @return List<ProductInfType>
	 */
	@SuppressWarnings("unchecked")
	public List<ProductInfType> queryProdsType(ProductInfType prodinfo,int start,int limit) {
		List<ProductInfType> list=new ArrayList<ProductInfType>();
		try {
			list= sqlMapClient.queryForList("product_manager.query_prodtype",prodinfo,start,limit);
		} catch (SQLException e) {
			e.printStackTrace();
			return list;
		}
		return list;
	}
	
	/**
	 * 查询id是否存在
	 * 
	 * @param 龙辰三
	 * @date 2011-8-20
	 * @param prodId
	 * 
	 * @return List<ProductInfType>
	 */
	public ProductInfType queryType(ProductInfType prodinfo) {		
		try {
			prodinfo= (ProductInfType) sqlMapClient.queryForObject("product_manager.query_idYON",prodinfo);
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return prodinfo;
	}
	
	/**
	 * 产品类型总条数
	 * 
	 * @param prodinfo
	 * @return
	 */
	public int TotalRulePage(ProductInfType prodinfo){
		int a = 0;
		try {
			a = (Integer)sqlMapClient.queryForObject("product_manager.query_prodtypepage",prodinfo);
		} catch (SQLException e) {
			e.printStackTrace();
			return a;
		}
		return a;
	}
	
	/**
	 * 查询所有卡产品的名称
	 * @return
	 */
	@SuppressWarnings("unchecked")
	public List<ProductInfType> queryProdName() {
		try {
			return sqlMapClient.queryForList("product_manager.query_name");
		} catch (SQLException e) {
			e.printStackTrace();
			return null;
		}
	}

	public Object queryProdType(ProductInfType prodinfo){
		Object ob = new Object();
		try {
			ob = sqlMapClient.queryForObject("product_manager.query_treeroot", prodinfo);
		} catch (SQLException e) {
			e.printStackTrace();
			return null;
		}
		return ob;
	}
	
	/**
	 * 查询产品数据表,用于异步生成树
	 * 
	 * @param 龙辰三
	 * @date 2011-8-20
	 * 
	 * @param prodId
	 * 
	 * @return List<ProductInfType>
	 */
	@SuppressWarnings("unchecked")
	public List<TreeNode> queryTreeMenu(TreeNode node) {
		try {
			return sqlMapClient.queryForList("product_manager.query_treenode",node);
		} catch (SQLException e) {
			e.printStackTrace();
			return null;
		}
	}

	/**
	 * 根据产品id查询其对应显示的列表,分页查询
	 * 
	 * @param 龙辰三
	 * @date 2011-8-20
	 * 
	 * @param prodId
	 * 
	 * @return List<ProductInfType>
	 */
	@SuppressWarnings("unchecked")
	public List<ProductInfType> queryProdGrid(ProductInfType product,
			int skipResults, int maxResults) {
		try {
			return sqlMapClient.queryForList("product_manager.query_prodGrid",
					product, skipResults, maxResults);
		} catch (SQLException e) {
			e.printStackTrace();
			return null;
		}
	}
	public int queryCount(ProductInfType product) {
		try {
			return (Integer)sqlMapClient.queryForObject("product_manager.getCount",
					product);
		} catch (SQLException e) {
			e.printStackTrace();
			return 0;
		}
	}

	/**
	 * 删除产品信息数据
	 * 
	 * @param 龙辰三
	 * @date 2011-8-20
	 * 
	 * @param product
	 * 
	 * @return boolean
	 */
	public boolean deleteProdInfo(ProductInfType product){
		try {
			sqlMapClient.delete("product_manager.delete_prodinfo", product);
		} catch (SQLException e) {
			e.printStackTrace();
			return false;
		}
		return true;
	}

	
	/**
	 * 删除时设置父节点的子项标识为“0”
	 * 
	 * @param product
	 * @return
	 */
	public int editDelProd(ProductInfType product){
		try {
			flag = sqlMapClient.update("product_manager.edit_delprodinfo", product);
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return flag;
	}
	
	
	/**
	 * 新增卡类型信息
	 * 
	 * @param 龙辰三
	 * @date 2011-8-20
	 * 
	 * @param product
	 * 
	 * @return boolean
	 */
	public boolean addProdType(ProductInfType product) {
		try {
			sqlMapClient.insert("product_manager.add_prodType", product);
		} catch (SQLException e) {
			e.printStackTrace();
			return false;
		}
		return true;
	}
	
	/**
	 * 查询当前新增id是否存在
	 * 
	 * @param product
	 * @return
	 */
	public int queryIdYON(ProductInfType product){
		int a=0;
		try {
			a = (Integer)sqlMapClient.queryForObject("product_manager.query_idYON", product);
		} catch (SQLException e) {
			e.printStackTrace();
			return a;
		}
		return a;
	}
	
	/**
	 * 查询卡类型是否有对应的产品,如果有则禁止删除
	 * 
	 * @param typeid
	 * @return
	 */
	public int queryProdForType(String typeid){
		int a=0;
		try {
			a = (Integer)sqlMapClient.queryForObject("product_manager.query_prodfortype", typeid);
		} catch (SQLException e) {
			e.printStackTrace();
			return a;
		}
		return a;
	}
	
	/**
	 * 修改卡类型数据
	 * 
	 * @param 龙辰三
	 * @date 2011-8-20
	 * 
	 * @param product
	 * 
	 * @return boolean
	 */
	public boolean editProdType(ProductInfType product) {
		try {
			sqlMapClient.update("product_manager.update_prodtype", product);
		} catch (SQLException e) {
			e.printStackTrace();
			return false;
		}
		return true;
	}
	
	/**
	 * 删除卡类型数据
	 * 
	 * @param 龙辰三
	 * @date 2011-8-20
	 * 
	 * @param product
	 * 
	 * @return boolean
	 */
	public boolean deleteProdType(ProductInfType product){
		try {
			sqlMapClient.delete("product_manager.delete_prodtype", product);
		} catch (SQLException e) {
			e.printStackTrace();
			return false;
		}
		return true;
	}
	
	/**
	 * 根据卡产品id查询城市id
	 * 
	 * @param cardid
	 * @return
	 */
	@SuppressWarnings("unchecked")
	public List<String> queryCardCity(String cardid){
		 try {
			return sqlMapClient.queryForList("product_manager.query_city", cardid);
		} catch (SQLException e) {
			e.printStackTrace();
			return null;
		}
	}
	
	/**
	 * 添加卡产品城市关联表
	 * 
	 * @param pardcty
	 * @return
	 */
	public boolean addCardCity(PaperCityCrd pardcty){
		try {
			sqlMapClient.insert("product_manager.add_prodCity", pardcty);
		} catch (SQLException e) {
			e.printStackTrace();
			return false;
		}
		return true;
	}
	
	/**
	 * 添加卡产品城市关联表的预印纸值
	 * @param pardcty
	 * @return
	 */
	public boolean addPaperByCardCity(PaperCityCrd pardcty){
		try {
			sqlMapClient.update("product_manager.edit_paper", pardcty);
		} catch (SQLException e) {
			e.printStackTrace();
			return false;
		}
		return true;
	}
	
	/**
	 * 删除卡产品对应城市id
	 * 
	 * @param pardcty
	 * @return
	 */
	public boolean deleteCardCity(PaperCityCrd pardcty){
		try {
			sqlMapClient.delete("product_manager.delete_prodCity", pardcty);
		} catch (SQLException e) {
			e.printStackTrace();
			return false;
		}
		return true;
	}

	
	/**
	 * 查询卡产品名称
	 * @param prodNo
	 * @return
	 */
	@SuppressWarnings("unchecked")
	public List<String> queryName(String prodNo) {
		List<String> list = null;
		try {
			list = sqlMapClient.queryForList("product_manager.query_nameByNo", prodNo);
		} catch (SQLException e) {
			e.printStackTrace();
			return null;
		}
		return list;
	}
	

}
